/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package caintra.Sapra.Model;

import caintra.Sapra.ComponentsImplements.DeleteSigns;
import java.math.BigDecimal;
import java.text.DecimalFormat;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;

/**
 *
 * @author ppratsc
 */
public class Practicante implements Comparable<Practicante> {
    DeleteSigns signs=new DeleteSigns();
    private int	practicanteId;
    private String matricula;
    private double sueldo;
    private double total_ahorro;
    private int	porcentaje_ahorro;
    private double fijo_ahorro;
    private Date fec_cancelacion;
    private String motivo_cancelacion;
    private String sexo;
    private String rfc;
    private Date fec_nacimiento;
    private String ciclo_escolar;
    private String comentarios;
    private int	fk_carreraId;
    private int	fk_nacionalidadId;
    private int	fk_departamentoId;
    private int	fk_centroCostoId;
    private int	fk_universidadId;
    private String edo_civil;
    private int	fk_direccionId;
    private String foto;
    private Date fec_inicioContrato;
    private Date fec_terminoContrato;
    private String email;
    private String homoclave;
    private String paterno;
    private String materno;
    private String nombre;
    private String escolaridad;
    private String telefono;
    private String grado;
    private String reportara;
    private String proyecto;
    private String horarioInicio;
    private String horarioFin;
    private String status;
    private int	ligaPracticanteId;
    private Date fecUltimopago;
    private int	numSiga;
    private String regimen;
    private String numEmpleado;
    private String fech_cerrada;
    private String cuenta;
    private int dias;
    private int meses;
    private double neto;
    private double monto_a_pagar;
    private double seguroPracticante;

    private double seguroEmpresa;

    private int ajustedia;
    private int deducciondia;
    private double ajustemonto;
    private double deduccionmonto;

    private String centrocosto;

    private String departamento;

    private String razon_empresa;

    private Double sueldo_dia;

    private ArrayList<String> lista_dias;

    private int dias_prefactura;

    private Date factura_inicio;

    private Date factura_fin;

    public DecimalFormat formato_decimal = new DecimalFormat("#########.##");

    public ArrayList<String> obtener_fechas(){
        Calendar cal_inicio,cal_termino;
        lista_dias = new ArrayList<String>();
        String dia_inicio="",dia_fin="";
        try {
            dia_inicio = formato.format(factura_inicio);
            dia_fin = formato.format(factura_fin);

            factura_inicio = formato.parse(dia_inicio);
            factura_fin = formato.parse(dia_fin);

            cal_inicio = Calendar.getInstance();
            cal_termino = Calendar.getInstance();

            cal_inicio.setTime(factura_inicio);
            cal_termino.setTime(factura_fin);

            while( cal_inicio.getTimeInMillis() <= cal_termino.getTimeInMillis() ){
                Date dia=cal_inicio.getTime();
                cal_inicio.add(Calendar.DATE, 1);
                lista_dias.add(formato.format(dia));
            }


        }catch (Exception e) {
            return null;
        }
        return lista_dias;
    }


    public String getFactura_Inicio_Str(){
        String retorno="";
        try {
            retorno=formato.format(factura_inicio);
        } catch (Exception e) {
            return "N/D";
        }
        return retorno;
    }
    public String getFactura_Fin_Str(){
        String retorno="";
        try {
            retorno=formato.format(factura_fin);
        } catch (Exception e) {
            return "N/D";
        }
        return retorno;
    }

    SimpleDateFormat formato=new SimpleDateFormat("yyyy-MM-dd");

    public Double getSueldo_dia() {
        try {
            sueldo_dia=sueldo/30;
        } catch (Exception e) {
            return 0.0;

        }
        return sueldo_dia;
    }
    public double getNeto() {
        BigDecimal bd;
        double costo_dia=0.0;
        try {
            neto =(sueldo * (dias+ ajustedia + deducciondia));
            neto=neto / 30;
            neto=neto + ajustemonto;
            neto= neto + deduccionmonto;
            //bd = new BigDecimal(monto_a_pagar).setScale(2, BigDecimal.ROUND_DOWN);
            neto=(int)neto;
            //monto_a_pagar
        } catch (Exception e) {
            return 0.0;
        }
        return neto;
    }
     public double getMonto_a_pagar() {
        double sueldo_dias;
        double otra_cantidad;
         double costo_dia=0.0;
        try {
            costo_dia =(sueldo/30);
            monto_a_pagar=((costo_dia*(dias + ajustedia ))+ ajustemonto );

        } catch (Exception e) {
            return 0.0;
        }
        return monto_a_pagar;
    }

    

    public void setSueldo_dia(Double sueldo_dia) {
        this.sueldo_dia = sueldo_dia;
    }



    public void setDias_prefactura(int dias_prefactura) {
        this.dias_prefactura = dias_prefactura;
    }

    public Date getFactura_fin() {
        return factura_fin;
    }

    public void setFactura_fin(Date factura_fin) {
        this.factura_fin = factura_fin;
    }

    public Date getFactura_inicio() {
        return factura_inicio;
    }

    public void setFactura_inicio(Date factura_inicio) {
        this.factura_inicio = factura_inicio;
    }





    

    
    public ArrayList<String> getLista_dias() {
        return lista_dias;
    }

    public void setLista_dias(ArrayList<String> lista_dias) {
        this.lista_dias = lista_dias;
    }

    public String getFecha_Inicio_Str(){
        String retorno="";
        try {
            retorno=formato.format(fec_inicioContrato);
        } catch (Exception e) {
            return "N/D";
        }
        return retorno;
    }

    public String getFecha_Termino_Str(){
        String retorno="";
        try {
            retorno=formato.format(fec_terminoContrato);
        } catch (Exception e) {
            return "N/D";
        }
        return retorno;
    }
    public String getFecha_Cancelacion_Str(){
        String retorno="N/D";
        try {
            if(fec_cancelacion != null)
                retorno=formato.format(fec_cancelacion);
        } catch (Exception e) {
            return "N/D";
        }
        return retorno;
    }
    
    public int getDias() {
        return dias+ajustedia+deducciondia;
    }
    public void setDias(int dias , int Dias_Max) {
        try {
            if(dias >= Dias_Max)
                 dias = Dias_Max;
            this.dias = dias;

        } catch (Exception e) {
            this.dias=0;
        }

    }
   

    public void setMonto_a_pagar(double monto_a_pagar) {
        this.monto_a_pagar = monto_a_pagar;
    }

    public int getAjustedia() {
        return ajustedia;
    }

    public void setAjustedia(int ajustedia) {
        this.ajustedia = ajustedia;
    }

    public double getAjustemonto() {
        return ajustemonto;
    }

    public void setAjustemonto(double ajustemonto) {
        this.ajustemonto = ajustemonto;
    }

    public int getDeducciondia() {
        return deducciondia;
    }

    public void setDeducciondia(int deducciondia) {
        this.deducciondia = deducciondia;
    }

    public double getDeduccionmonto() {
        return deduccionmonto;
    }

    public void setDeduccionmonto(double deduccionmonto) {
        this.deduccionmonto = deduccionmonto;
    }
    
   

    

    

    public void setNeto(double neto) {
        this.neto = neto;
    }

    public String getCentrocosto() {
        return centrocosto;
    }

    public String getCuenta() {
        try {
            if(cuenta == null)
                return "";
        } catch (Exception e) {
                return "";
        }
        return cuenta;
    }

    public void setCuenta(String cuenta) {
        this.cuenta = cuenta;
    }

    public void setCentrocosto(String centrocosto) {
        this.centrocosto = centrocosto;
    }

    public String getDepartamento() {
        return departamento;
    }

    public void setDepartamento(String departamento) {
        this.departamento = departamento;
    }

    public String getFech_cerrada() {
        return fech_cerrada;
    }

    public void setFech_cerrada(String fech_cerrada) {
        this.fech_cerrada = fech_cerrada;
    }

    public int getMeses() {
        return meses;
    }

    public void setMeses(int meses) {
        this.meses = meses;
    }

    public double getSeguroEmpresa() {
        return seguroEmpresa;
    }

    public void setSeguroEmpresa(double seguroEmpresa) {
        this.seguroEmpresa = seguroEmpresa;
    }

    public double getSeguroPracticante() {
        return seguroPracticante;
    }

    public void setSeguroPracticante(double seguroPracticante) {
        this.seguroPracticante = seguroPracticante;
    }

    

    public String getRazon_empresa() {
        return razon_empresa;
    }

    public void setRazon_empresa(String razon_empresa) {
        this.razon_empresa = razon_empresa;
    }

    

    public String getCiclo_escolar() {
        return ciclo_escolar;
    }

    public void setCiclo_escolar(String ciclo_escolar) {
        this.ciclo_escolar = ciclo_escolar;
    }

    public String getComentarios() {
        return comentarios;
    }

    public void setComentarios(String comentarios) {
        this.comentarios = comentarios;
    }

    public String getEdo_civil() {
        return edo_civil;
    }

    public void setEdo_civil(String edo_civil) {
        this.edo_civil = edo_civil;
    }

    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }

    public String getEscolaridad() {
        return escolaridad;
    }

    public void setEscolaridad(String escolaridad) {
        this.escolaridad = escolaridad;
    }

    public Date getFecUltimopago() {
        return fecUltimopago;
    }

    public void setFecUltimopago(Date fecUltimopago) {
        this.fecUltimopago = fecUltimopago;
    }

    public Date getFec_cancelacion() {
        return fec_cancelacion;
    }

    public void setFec_cancelacion(Date fec_cancelacion) {
        this.fec_cancelacion = fec_cancelacion;
    }

    public Date getFec_inicioContrato() {
        return fec_inicioContrato;
    }

    public void setFec_inicioContrato(Date fec_inicioContrato) {
        this.fec_inicioContrato = fec_inicioContrato;
    }

    public Date getFec_nacimiento() {
        return fec_nacimiento;
    }

    public void setFec_nacimiento(Date fec_nacimiento) {
        this.fec_nacimiento = fec_nacimiento;
    }

    public Date getFec_terminoContrato() {
        return fec_terminoContrato;
    }

    public void setFec_terminoContrato(Date fec_terminoContrato) {
        this.fec_terminoContrato = fec_terminoContrato;
    }

    public double getFijo_ahorro() {
        return fijo_ahorro;
    }

    public void setFijo_ahorro(double fijo_ahorro) {
        this.fijo_ahorro = fijo_ahorro;
    }

    public int getFk_carreraId() {
        return fk_carreraId;
    }

    public void setFk_carreraId(int fk_carreraId) {
        this.fk_carreraId = fk_carreraId;
    }

    public int getFk_centroCostoId() {
        return fk_centroCostoId;
    }

    public void setFk_centroCostoId(int fk_centroCostoId) {
        this.fk_centroCostoId = fk_centroCostoId;
    }

    public int getFk_departamentoId() {
        return fk_departamentoId;
    }

    public void setFk_departamentoId(int fk_departamentoId) {
        this.fk_departamentoId = fk_departamentoId;
    }

    public int getFk_direccionId() {
        return fk_direccionId;
    }

    public void setFk_direccionId(int fk_direccionId) {
        this.fk_direccionId = fk_direccionId;
    }

    public int getFk_nacionalidadId() {
        return fk_nacionalidadId;
    }

    public void setFk_nacionalidadId(int fk_nacionalidadId) {
        this.fk_nacionalidadId = fk_nacionalidadId;
    }

    public int getFk_universidadId() {
        return fk_universidadId;
    }

    public void setFk_universidadId(int fk_universidadId) {
        this.fk_universidadId = fk_universidadId;
    }

    public String getFoto() {
        return foto;
    }

    public void setFoto(String foto) {
        this.foto = foto;
    }

    public String getGrado() {
        return grado;
    }

    public void setGrado(String grado) {
        this.grado = grado;
    }

    public String getHomoclave() {
        return homoclave;
    }

    public void setHomoclave(String homoclave) {
        this.homoclave = homoclave;
    }

    public String getHorarioFin() {
        return horarioFin;
    }

    public void setHorarioFin(String horarioFin) {
        this.horarioFin = horarioFin;
    }

    public String getHorarioInicio() {
        return horarioInicio;
    }

    public void setHorarioInicio(String horarioInicio) {
        this.horarioInicio = horarioInicio;
    }

    public int getLigaPracticanteId() {
        return ligaPracticanteId;
    }

    public void setLigaPracticanteId(int ligaPracticanteId) {
        this.ligaPracticanteId = ligaPracticanteId;
    }

    public String getMaterno() {

        return signs.Delete_Signs_And_Numbers(materno);
    }

    public void setMaterno(String materno) {
        signs.Delete_Signs_And_Numbers(materno);
        this.materno = materno;
    }

    public String getMatricula() {
        return matricula;
    }

    public void setMatricula(String matricula) {
        this.matricula = matricula;
    }

    public String getMotivo_cancelacion() {
        return motivo_cancelacion;
    }

    public void setMotivo_cancelacion(String motivo_cancelacion) {
        this.motivo_cancelacion = motivo_cancelacion;
    }

    public String getNombre() {

        return signs.Delete_Signs_And_Numbers(nombre);
    }

    public void setNombre(String nombre) {
        signs.Delete_Signs_And_Numbers(paterno);
        this.nombre = nombre;
    }

    public String getNumEmpleado() {
        return numEmpleado;
    }

    public void setNumEmpleado(String numEmpleado) {
        this.numEmpleado = numEmpleado;
    }

    public int getNumSiga() {
        return numSiga;
    }

    public void setNumSiga(int numSiga) {
        this.numSiga = numSiga;
    }

    public String getPaterno() {
        return signs.Delete_Signs_And_Numbers(paterno);
    }

    public void setPaterno(String paterno) {
        signs.Delete_Signs_And_Numbers(paterno);
        this.paterno = paterno;
    }

    public int getPorcentaje_ahorro() {
        return porcentaje_ahorro;
    }

    public void setPorcentaje_ahorro(int porcentaje_ahorro) {
        this.porcentaje_ahorro = porcentaje_ahorro;
    }

    public int getPracticanteId() {
        return practicanteId;
    }

    public void setPracticanteId(int practicanteId) {
        this.practicanteId = practicanteId;
    }

    public String getProyecto() {
        return proyecto;
    }

    public void setProyecto(String proyecto) {
        this.proyecto = proyecto;
    }

    public String getRegimen() {
        return regimen;
    }

    public void setRegimen(String regimen) {
        this.regimen = regimen;
    }

    public String getReportara() {
        return reportara;
    }

    public void setReportara(String reportara) {
        this.reportara = reportara;
    }

    public String getRfc() {
        return rfc;
    }

    public void setRfc(String rfc) {
        this.rfc = rfc;
    }

    public String getSexo() {
        return sexo;
    }

    public void setSexo(String sexo) {
        this.sexo = sexo;
    }

    public String getStatus() {
        return status;
    }

    public void setStatus(String status) {
        this.status = status;
    }

    public double getSueldo() {
        return sueldo;
    }

    public void setSueldo(double sueldo) {
        this.sueldo = sueldo;
    }

    public String getTelefono() {
        return telefono;
    }

    public void setTelefono(String telefono) {
        this.telefono = telefono;
    }

    public double getTotal_ahorro() {
        return total_ahorro;
    }

    public void setTotal_ahorro(double total_ahorro) {
        this.total_ahorro = total_ahorro;
    }

    //metodos agregados
   

    public void setFechaCerrada(String meses){
        this.fech_cerrada=meses;
    }

    public String getFechaCerrada(){
        return fech_cerrada;
    }
    public int compareTo(Practicante o) {
        int lastCmp = nombre.compareTo(o.nombre);
        return (lastCmp != 0 ? lastCmp :
                paterno.compareTo(o.paterno));

    }

    @Override
    public String toString(){
        return nombre+" "+paterno+" "+paterno;
    }


    public String fix_String(double cadena){
        String aux="";
        formato_decimal.setMinimumFractionDigits(2);//set cantidad minima de digitos en conversion
        formato_decimal.setMaximumFractionDigits(2);
        try {
            aux=formato_decimal.format(cadena);
            aux=aux.replace(',', '.');
            aux=formato_decimal.format(Double.parseDouble(aux));
            aux="$ "+aux;
        } catch (Exception e) {
            return "$ 0.00";
        }
        return aux;
    }

    public String fec_termino(){
        String retorno="";
        try {
            retorno=formato.format(fec_cancelacion);
        } catch (Exception e) {
            return "N/D";
        }
        return retorno;
    }
}
